CC = gcc
CXX= g++

INCLUDE += -I. -I ./include
LDFLAGS += -fPIC  -L ./lib  

LIBS += -lasound -lpthread -lvtn_mic6_circle
		

MW_DIR= ./src
 
TARGET = vtn-4mic

_COMPILE_TIME = $(shell date +"%Y-%m-%d %H:%M:%S")
COMMON_FLAGS += -DCOMPILE_TIME="\"$(_COMPILE_TIME)\""

COMMON_FLAGS += -DNEW_MEDIA_PLAYER=1

CFLAGS += -fPIC -O3 -Wundef $(COMMON_FLAGS)
CXXFLAGS += -fPIC -O3 -Wundef $(COMMON_FLAGS)

#CFLAGS += -fPIC -O3 -fno-strict-aliasing -fprefetch-loop-arrays
#CXXFLAGS += -fPIC -O3 -fno-strict-aliasing -fprefetch-loop-arrays
#CFLAGS CXXFLAGS -g(给gdb调试用的) 

#找到所有编译目录下的头文件--
SAMDIR=$(MW_DIR)

SAMINCH=$(shell find $(SAMDIR) -name "*.h")

#找到了，大家可以看到Makefile是可以使用shell命令的，现在结果存储在SAMINCH。

TMP_DIR=$(dir $(SAMINCH))

#dir是个函数，就是列出SAMINCH目录前缀（/*.h之前的字串）的结果。

SAMINCDIR=$(sort $(TMP_DIR))

#sort也是个函数，这是为了去除重复的目录名。

SAMINCDIR1 = $(subst json,log,$(SAMINCDIR) )

INCLUDE += $(foreach temp, $(SAMINCDIR1), -I$(temp))

#只是列出所有匹配的目录结果， 加到-I选项之后，用空格隔开。


#好了，轮到源程序了。

CPP_FILES=$(shell find $(SAMDIR)  -name '*.cpp')
C_FILES =$(shell find $(SAMDIR) -name '*.c')

OBJCPP=$(CPP_FILES:%.cpp=%.ocpp)
OBJC  =$(C_FILES:%.c=%.o)

#建立规则
#$(warning objcpp is $(OBJCPP) objc is $(OBJC) )
#$(warning cflags is $(CFLAGS))
#下面实际的编译过程加上：
$(TARGET): $(OBJCPP) $(OBJC)
	$(CXX) $(LDFLAGS) $(OBJCPP) $(OBJC) -o $@  $(LIBS)
	
$(OBJCPP): %.ocpp: %.cpp
	$(CXX) -c $< $(CXXFLAGS) $(INCLUDE) -o $@ 

$(OBJC): %.o: %.c
	$(CC) -c $(CFLAGS) $(INCLUDE) $< -o $@ 


clean:
	rm -fr $(OBJCPP) $(OBJC) $(TARGET)


